<?php
    class RequirementController extends Main_Controller_Action
    {
        private $_arrParam;
        private $_model;
        private $_validate;
        private $_common;
        
        public function init()
        {
            $this->loadTemplates();
            $this->_arrParam = $this->_request->getParams();
            $this->_model = new Default_Model_Requirement();
            $this->_validate = new Default_Form_ValidateRequirement();
            $this->_common = new Default_Model_Common();
            if(isset($this->_arrParam['lang'])) {
                $this->view->lang = $this->_arrParam['lang'];
            }
            else {
                $this->view->lang = 'vi';
            }
        }
        
        public function indexAction()
        {
            $this->view->headTitle('Julytour - Đặt phòng theo yêu cầu');
            
            if($this->_request->isPost()) {
                $hotel          = trim(strip_tags($this->_arrParam['hotel']));
                $start_date     = trim(strip_tags($this->_arrParam['start_date']));
                $finish_date    = trim(strip_tags($this->_arrParam['finish_date']));
                $qty_room       = trim(strip_tags($this->_arrParam['qty_room']));
                $qty_adult      = trim(strip_tags($this->_arrParam['qty_adult']));
                $qty_child      = trim(strip_tags($this->_arrParam['qty_child']));
                $add_bed        = trim(strip_tags($this->_arrParam['add_bed']));
                $requirement    = trim(strip_tags($this->_arrParam['requirement']));
                $fullname       = trim(strip_tags($this->_arrParam['fullname']));
                $phone          = trim(strip_tags($this->_arrParam['phone']));
                $address        = trim(strip_tags($this->_arrParam['address']));
                $email          = trim(strtolower(strip_tags($this->_arrParam['email'])));
                $yahoo          = trim(strtolower(strip_tags($this->_arrParam['yahoo'])));
                $skype          = trim(strtolower(strip_tags($this->_arrParam['skype'])));
                $agree          = $this->_arrParam['agree'];
                $flag           = true;
                $this->view->requirementValue = $requirement;
                
                // Validate Data
                if($this->_validate->validateHotel($hotel)) {
                    $this->view->hotelValue = $hotel;
                }
                else {
                    $this->view->errorHotel = 'Tên khách sạn từ 1 đến 300 kí tự';
                    $flag = false;
                }
                if($this->_validate->validateDate($this->_common->formatDateToValidate($start_date))) {
                    $this->view->startDateValue = $start_date;
                }
                else {
                    $this->view->errorStartDate = 'Ngày nhận phòng phải đúng định dạng Ngày/Tháng/Năm (00/00/0000)';
                    $flag = false;
                }
                if($this->_validate->validateDate($this->_common->formatDateToValidate($finish_date))) {
                    $this->view->finishDateValue = $finish_date;
                }
                else {
                    $this->view->errorFinishDate = 'Ngày trả phòng phải đúng định dạng Ngày/Tháng/Năm (00/00/0000)';
                    $flag = false;
                }
                if($this->_validate->validateQuantity($qty_room)) {
                    $this->view->qtyRoomValue = $qty_room;
                }
                else {
                    $this->view->errorQtyRoom = 'Số lượng phòng gồm các kí tự số 0-9 và không quá 3 kí tự';
                    $flag = false;
                }
                if($this->_validate->validateQuantity($qty_adult)) {
                    $this->view->qtyAdultValue = $qty_adult;
                }
                else {
                    $this->view->errorQtyAdult = 'Số lượng người lớn gồm các kí tự số 0-9 và không quá 3 kí tự';
                    $flag = false;
                }
                if($this->_validate->validateQuantity($qty_child)) {
                    $this->view->qtyChildValue = $qty_child;
                }
                else {
                    $this->view->errorQtyChild = 'Số lượng trẻ em gồm các kí tự số 0-9 và không quá 3 kí tự';
                    $flag = false;
                }
                if($this->_validate->validateQuantity($add_bed)){
                    $this->view->addBedValue = $add_bed;
                }
                else {
                    $this->view->errorAddBed = 'Số lượng giường muốn thêm gồm các kí tự số 0-9 và không quá 3 kí tự';
                    $flag = false;
                }
                if($this->_validate->validateFullname($fullname)) {
                    $this->view->fullnameValue = $fullname;
                }
                else {
                    $this->view->errorFullname = 'Họ tên gồm từ 1 đến 50 kí tự';
                    $flag = false;
                }
                if($this->_validate->validatePhone($phone)) {
                    $this->view->phoneValue = $phone;
                }
                else {
                    $this->view->errorPhone = 'Số điện thoại từ 1 đến 20 kí tự';
                    $flag = false;
                }
                if($this->_validate->validateAddress($address)) {
                    $this->view->addressValue = $address;
                }
                else {
                    $this->view->errorAddress = 'Địa chỉ từ 1 đến 500 kí tự';
                    $flag = false;
                }
                if(!empty($email)) {
                    if($this->_validate->validateEmail($email)) {
                        $this->view->emailValue = $email;
                    }
                    else {
                        $this->view->errorEmail = 'Địa chỉ email không hợp lệ';
                        $flag = false;
                    }
                }
                if(!empty($yahoo)) {
                    if($this->_validate->validateNickname($yahoo)) {
                        $this->view->yahooValue = $yahoo;
                    }
                    else {
                        $this->view->errorYahoo = 'Tài khoản Yahoo không quá 50 kí tự';
                        $flag = false;
                    }
                }
                if(!empty($skype)) {
                    if($this->_validate->validateNickname($skype)) {
                        $this->view->skypeValue = $skype;
                    }
                    else {
                        $this->view->errorSkype = 'Tài khoản Skype không quá 50 kí tự';
                        $flag = false;
                    }
                }
                if($agree != 'on') {
                    $this->view->errorSendMail = "Bạn chưa đồng ý với các điều khoản đặt phòng";
                    $flag = false;
                }
                
                if($flag == true) {
                    $strFlex = new Zendvn_Filter_RemoveCircumflex();
                    $create_date = date('Y-m-d H:i:s');
                    $data = array(
                        'hotel' => $hotel,
                        'start_date' => $this->_common->formatDateToSql($start_date),
                        'finish_date' => $this->_common->formatDateToSql($finish_date),
                        'qty_room' => $qty_room,
                        'qty_adult' => $qty_adult,
                        'qty_child' => $qty_child,
                        'add_bed' => $add_bed,
                        'requirement' => $requirement,
                        'fullname' => $fullname,
                        'phone' => $phone,
                        'address' => $address,
                        'email' => $email,
                        'yahoo' => $yahoo,
                        'skype' => $skype,
                        'create_date' => $create_date,
                        'type' => 1,
                        'status' => 2,
                        'hotel_plaintext'=>strtolower($strFlex->filter($hotel)),
                        'fullname_plaintext'=>strtolower($strFlex->filter($fullname)),
                    );
                    $this->_model->addRequirement($data);
                    
                    // Send mail
                    $tr = new Zend_Mail_Transport_Smtp('smtp.gmail.com', array(
                        'auth' => 'login',
                        'username' => 'umarket.vn@gmail.com',
                        'password' => 'dthink@123',
                        'ssl' => 'ssl',
                        'port' => 465)
                    );
                    Zend_Mail::setDefaultTransport($tr);
                    $message = 'Thời gian gửi mail: '.$this->_common->formatDateTime($create_date).'<br/><br/>';
                    $message .= 'Thông tin đặt phòng:<br/>';
                    $message .= 'Khách sạn: '.$hotel.'<br/>';
                    $message .= 'Ngày nhận phòng: '.$start_date.'<br/>';
                    $message .= 'Ngày trả phòng: '.$finish_date.'<br/>';
                    $message .= 'Số lượng phòng: '.$qty_room.'<br/>';
                    $message .= 'Số lượng người lớn: '.$qty_adult.'<br/>';
                    $message .= 'Số lượng trẻ em: '.$qty_child.'<br/>';
                    $message .= 'Thêm giường: '.$add_bed.'<br/>';
                    $message .= 'Yêu cầu khác: '.$requirement.'<br/>';
                    $message .= '<br/>Thông tin khách hàng:<br/>';
                    $message .= 'Họ tên: '.$fullname.'<br/>';
                    $message .= 'Điện thoại: '.$phone.'<br/>';
                    $message .= 'Địa chỉ: '.$address.'<br/>';
                    $message .= 'Email: '.$email.'<br/>';
                    $message .= 'Yahoo: '.$yahoo.'<br/>';
                    $message .= 'Skype: '.$skype.'<br/>';
                    $mail = new Zend_Mail('UTF-8');
                    $mail->setFrom('umarket.vn@gmail.com', 'uMarket.vn');
                    $mail->addTo('vinhbt.vn9x@gmail.com');
                    $mail->setSubject('Thông báo đặt phòng theo yêu cầu');
                    $mail->setBodyHtml($message);
                    try{
                        $mail->send();
                    }
                    catch(Exception $e){
                        $this->view->errorSendMail = 'Hệ thống đang bảo trì, xin quý khách vui lòng đặt phòng vào lúc khác';
                    }
                    $this->_redirect($this->view->lang.'/requirement/success');
                }
            }
        }
        
        public function changeAction()
        {
            $this->view->headTitle('Julytour - Thay đổi thông tin đặt phòng');
            
            if($this->_request->isPost()) {
                $hotel          = trim(strip_tags($this->_arrParam['hotel']));
                $start_date     = trim(strip_tags($this->_arrParam['start_date']));
                $finish_date    = trim(strip_tags($this->_arrParam['finish_date']));
                $qty_room       = trim(strip_tags($this->_arrParam['qty_room']));
                $qty_adult      = trim(strip_tags($this->_arrParam['qty_adult']));
                $qty_child      = trim(strip_tags($this->_arrParam['qty_child']));
                $add_bed        = trim(strip_tags($this->_arrParam['add_bed']));
                $requirement    = trim(strip_tags($this->_arrParam['requirement']));
                $fullname       = trim(strip_tags($this->_arrParam['fullname']));
                $phone          = trim(strip_tags($this->_arrParam['phone']));
                $address        = trim(strip_tags($this->_arrParam['address']));
                $email          = trim(strtolower(strip_tags($this->_arrParam['email'])));
                $yahoo          = trim(strtolower(strip_tags($this->_arrParam['yahoo'])));
                $skype          = trim(strtolower(strip_tags($this->_arrParam['skype'])));
                $agree          = $this->_arrParam['agree'];
                $type           = $this->_arrParam['type'];
                $flag           = true;
                $this->view->requirementValue = $requirement;
                
                // Validate Data
                if($this->_validate->validateHotel($hotel)) {
                    $this->view->hotelValue = $hotel;
                }
                else {
                    $this->view->errorHotel = 'Tên khách sạn từ 1 đến 300 kí tự';
                    $flag = false;
                }
                if($this->_validate->validateDate($this->_common->formatDateToValidate($start_date))) {
                    $this->view->startDateValue = $start_date;
                }
                else {
                    $this->view->errorStartDate = 'Ngày nhận phòng phải đúng định dạng Ngày/Tháng/Năm (00/00/0000)';
                    $flag = false;
                }
                if($this->_validate->validateDate($this->_common->formatDateToValidate($finish_date))) {
                    $this->view->finishDateValue = $finish_date;
                }
                else {
                    $this->view->errorFinishDate = 'Ngày trả phòng phải đúng định dạng Ngày/Tháng/Năm (00/00/0000)';
                    $flag = false;
                }
                if($this->_validate->validateQuantity($qty_room)) {
                    $this->view->qtyRoomValue = $qty_room;
                }
                else {
                    $this->view->errorQtyRoom = 'Số lượng phòng gồm các kí tự số 0-9 và không quá 3 kí tự';
                    $flag = false;
                }
                if($this->_validate->validateQuantity($qty_adult)) {
                    $this->view->qtyAdultValue = $qty_adult;
                }
                else {
                    $this->view->errorQtyAdult = 'Số lượng người lớn gồm các kí tự số 0-9 và không quá 3 kí tự';
                    $flag = false;
                }
                if($this->_validate->validateQuantity($qty_child)) {
                    $this->view->qtyChildValue = $qty_child;
                }
                else {
                    $this->view->errorQtyChild = 'Số lượng trẻ em gồm các kí tự số 0-9 và không quá 3 kí tự';
                    $flag = false;
                }
                if($this->_validate->validateQuantity($add_bed)){
                    $this->view->addBedValue = $add_bed;
                }
                else {
                    $this->view->errorAddBed = 'Số lượng giường muốn thêm gồm các kí tự số 0-9 và không quá 3 kí tự';
                    $flag = false;
                }
                if($this->_validate->validateFullname($fullname)) {
                    $this->view->fullnameValue = $fullname;
                }
                else {
                    $this->view->errorFullname = 'Họ tên gồm từ 1 đến 50 kí tự';
                    $flag = false;
                }
                if($this->_validate->validatePhone($phone)) {
                    $this->view->phoneValue = $phone;
                }
                else {
                    $this->view->errorPhone = 'Số điện thoại từ 1 đến 20 kí tự';
                    $flag = false;
                }
                if($this->_validate->validateAddress($address)) {
                    $this->view->addressValue = $address;
                }
                else {
                    $this->view->errorAddress = 'Địa chỉ từ 1 đến 500 kí tự';
                    $flag = false;
                }
                if(!empty($email)) {
                    if($this->_validate->validateEmail($email)) {
                        $this->view->emailValue = $email;
                    }
                    else {
                        $this->view->errorEmail = 'Địa chỉ email không hợp lệ';
                        $flag = false;
                    }
                }
                if(!empty($yahoo)) {
                    if($this->_validate->validateNickname($yahoo)) {
                        $this->view->yahooValue = $yahoo;
                    }
                    else {
                        $this->view->errorYahoo = 'Tài khoản Yahoo không quá 50 kí tự';
                        $flag = false;
                    }
                }
                if(!empty($skype)) {
                    if($this->_validate->validateNickname($skype)) {
                        $this->view->skypeValue = $skype;
                    }
                    else {
                        $this->view->errorSkype = 'Tài khoản Skype không quá 50 kí tự';
                        $flag = false;
                    }
                }
                if($agree != 'on') {
                    $this->view->errorSendMail = "Bạn chưa đồng ý với các điều khoản đặt phòng";
                    $flag = false;
                }
                
                if($flag == true) {
                    $strFlex = new Zendvn_Filter_RemoveCircumflex();
                    $create_date = date('Y-m-d H:i:s');
                    $data = array(
                        'hotel' => $hotel,
                        'start_date' => $this->_common->formatDateToSql($start_date),
                        'finish_date' => $this->_common->formatDateToSql($finish_date),
                        'qty_room' => $qty_room,
                        'qty_adult' => $qty_adult,
                        'qty_child' => $qty_child,
                        'add_bed' => $add_bed,
                        'requirement' => $requirement,
                        'fullname' => $fullname,
                        'phone' => $phone,
                        'address' => $address,
                        'email' => $email,
                        'yahoo' => $yahoo,
                        'skype' => $skype,
                        'create_date' => $create_date,
                        'type' => $type,
                        'status' => 2,
                        'hotel_plaintext'=>strtolower($strFlex->filter($hotel)),
                        'fullname_plaintext'=>strtolower($strFlex->filter($fullname)),
                    );
                    $this->_model->addRequirement($data);
                    
                    // Send mail
                    $tr = new Zend_Mail_Transport_Smtp('smtp.gmail.com', array(
                        'auth' => 'login',
                        'username' => 'umarket.vn@gmail.com',
                        'password' => 'dthink@123',
                        'ssl' => 'ssl',
                        'port' => 465)
                    );
                    Zend_Mail::setDefaultTransport($tr);
                    $message = 'Thời gian gửi mail: '.$this->_common->formatDateTime($create_date).'<br/><br/>';
                    if($type == 2) {
                        $type = 'Thay đổi thông tin đặt phòng';
                    }
                    else if($type == 3) {
                        $type = 'Hủy đặt phòng';
                    }
                    $message .= 'Yêu cầu: '.$type.'<br/><br/>';
                    $message .= 'Thông tin đặt phòng:<br/>';
                    $message .= 'Khách sạn: '.$hotel.'<br/>';
                    $message .= 'Ngày nhận phòng: '.$start_date.'<br/>';
                    $message .= 'Ngày trả phòng: '.$finish_date.'<br/>';
                    $message .= 'Số lượng phòng: '.$qty_room.'<br/>';
                    $message .= 'Số lượng người lớn: '.$qty_adult.'<br/>';
                    $message .= 'Số lượng trẻ em: '.$qty_child.'<br/>';
                    $message .= 'Thêm giường: '.$add_bed.'<br/>';
                    $message .= 'Yêu cầu khác: '.$requirement.'<br/>';
                    $message .= '<br/>Thông tin khách hàng:<br/>';
                    $message .= 'Họ tên: '.$fullname.'<br/>';
                    $message .= 'Điện thoại: '.$phone.'<br/>';
                    $message .= 'Địa chỉ: '.$address.'<br/>';
                    $message .= 'Email: '.$email.'<br/>';
                    $message .= 'Yahoo: '.$yahoo.'<br/>';
                    $message .= 'Skype: '.$skype.'<br/>';
                    $mail = new Zend_Mail('UTF-8');
                    $mail->setFrom('umarket.vn@gmail.com', 'uMarket.vn');
                    $mail->addTo('vinhbt.vn9x@gmail.com');
                    $mail->setSubject('Thông báo thay đổi thông tin đặt phòng');
                    $mail->setBodyHtml($message);
                    try{
                        $mail->send();
                    }
                    catch(Exception $e){
                        $this->view->errorSendMail = 'Hệ thống đang bảo trì, xin quý khách vui lòng đặt phòng vào lúc khác';
                    }
                    $this->_redirect($this->view->lang.'/requirement/successchange');
                }
            }
        }
        
        public function successchangeAction()
        {
            $this->_helper->layout->setLayout('success_layout');
            $this->view->headTitle('Julytour - Thông báo');
        }
        
        public function successAction()
        {
            $this->_helper->layout->setLayout('success_layout');
            $this->view->headTitle('Julytour - Thông báo');
        }
    }
